<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
<script>




//【示例1】下面示例演示了对象属性查找原型的基本方法和规律。
function a(x){ 	// 构造函数a
    this.x = x;
}
a.prototype.x = 0; 	// 原型属性x的值为0
function b(x){ 	// 构造函数b
    this.x = x;
}
b.prototype = new a(1); 	// 原型对象为构造函数a的实例
function c(x){ 	// 构造函数c
    this.x = x;
}
c.prototype = new b(2); 	// 原型对象为构造函数b的实例
var d = new c(3);	// 实例化构造函数c
alert(d.x); 	// 调用实例对象d的属性x，返回值为3
delete d.x; 	// 删除实例对象的本地属性x 
alert(d.x); 	// 调用实例对象d的属性x，返回值为2
delete c.prototype.x; 	// 删除c类的原型属性x
alert(d.x); 	// 调用实例对象d的属性x，返回值为1
delete b.prototype.x; 	// 删除b类的原型属性x
alert(d.x); 	// 调用实例对象d的属性x，返回值为0
delete a.prototype.x; 	// 删除a类的原型属性x
alert(d.x); 	// 调用实例对象d的属性x，返回值为undefined
//【示例2】在JavaScript中，一切都是对象，函数是第一型。Function和Object都是函数的实例。构造函数的父原型指向Function的原型，Function.prototype的父原型是Object的原型，Object的父原型也指向Function的原型，Object.prototype是所有父原型的顶层。
Function.prototype.a = function(){	// Function原型方法
    alert( "Function" );
}
Object.prototype.a = function(){	// Object原型方法
    alert( "Object" );
}
function f(){	// 构造函数f
    this.a = "a";
}
f.prototype = {	// 构造函数f的原型方法
    w : function(){
        alert( "w" );
    }
}
alert( f instanceof Function ); 	// 返回true，说明f是Function的实例
alert( f.prototype instanceof Object ); 	// 返回true，说明f的原型也是对象
alert( Function instanceof Object ); 	// 返回true，说明Function是Object的实例
alert( Function.prototype instanceof Object ); // 返回true，说明Function的原型是Object的实例
alert( Object instanceof Function ); 	// 返回true，说明Object是Function的实例
alert( Object.prototype instanceof Function ); // 返回false，说明Object.prototype是所有父原型的顶层






</script>
</head>
<body>
</body>
</html>
